SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

--Procedimientos almacenados para la tabla BARRIO

CREATE PROCEDURE PR_BARRIO_I 
	(
		@idBarrio int,
		@nombre varchar(40)
	)
AS
	INSERT INTO[BARRIO] (NOMBRE)
	VALUES (@nombre)
	RETURN SCOPE_IDENTITY()

CREATE PROCEDURE PR_BARRIO_D(@idBarrio int)
AS
	DELETE FROM [BARRIO] WHERE ID_BARRIO = @idBarrio

CREATE PROCEDURE PR_BARRIO_S
	(
		@idBarrio int
	)
AS
	SELECT ID_BARRIO, NOMBRE
	FROM BARRIO
	WHERE ID_BARRIO = @idBarrio
	RETURN

CREATE PROCEDURE PR_BARRIO_U
	(
		@idBarrio int,
		@nombre varchar(40)
	)
AS
	UPDATE [BARRIO] SET NOMBRE = @nombre
	WHERE ID_BARRIO = @idBarrio

CREATE PROCEDURE PR_BARRIO_SA
AS
	SELECT * FROM BARRIO
	ORDER BY NOMBRE
	RETURN

--Procedimientos almacenados para la tabla INVESTIGADOR

CREATE PROCEDURE PR_INVESTIGADOR_I
	(
		@idInvestigador int,
		@nombreYApellido varchar(60),
		@dni varchar(30),
		@legajo varchar(30),
		@telefonoFijo varchar(20),
		@telefonoCelular varchar(20),
		@sitioWeb varchar(30),
		@mail varchar(50),
		@direccion varchar(30),
		@huella varchar(40),
		@imagen varchar(50),
		@userName varchar(25),
		@password varchar(25),
		@esEncargado tinyint,
		@fkidBarrio int
	)
AS
	INSERT INTO[INVESTIGADOR] (NOMBREYAPELLIDO, DNI, LEGAJO, TELEFONOFIJO, TELEFONOCELULAR, SITIOWEB, MAIL, DIRECCION, HUELLA,
							   IMAGEN, USERNAME, PASSWORD, ESENCARGADO, FK_ID_BARRIO)
	VALUES (@nombreYApellido, @dni, @legajo, @telefonoFijo, @telefonoCelular, @sitioWeb, @mail, @direccion, @huella, @imagen, @userName, @password, @esEncargado, @fkidBarrio)
	RETURN SCOPE_IDENTITY()

CREATE PROCEDURE PR_INVESTIGADOR_D(@idInvestigador int)
AS
	DELETE FROM [INVESTIGADOR] WHERE ID_INVESTIGADOR = @idInvestigador

CREATE PROCEDURE PR_INVESTIGADOR_S
	(
		@idInvestigador int
	)
AS
	SELECT ID_INVESTIGADOR, NOMBREYAPELLIDO, DNI, LEGAJO, TELEFONOFIJO, TELEFONOCELULAR, SITIOWEB, MAIL, DIRECCION, HUELLA,
		   IMAGEN, USERNAME, PASSWORD, ESENCARGADO, FK_ID_BARRIO
	FROM INVESTIGADOR
	WHERE ID_INVESTIGADOR = @idInvestigador
	RETURN

CREATE PROCEDURE PR_INVESTIGADOR_U
	(
		@idInvestigador int,
		@nombreYApellido varchar(60),
		@dni varchar(30),
		@legajo varchar(30),
		@telefonoFijo varchar(20),
		@telefonoCelular varchar(20),
		@sitioWeb varchar(30),
		@direccion varchar(30),
		@mail varchar(50),
		@huella varchar(40),
		@imagen varchar(50),
		@userName varchar(25),
		@password varchar(25),
		@esEncargado tinyint,
		@fkidBarrio int
	)
AS
	UPDATE [INVESTIGADOR] SET NOMBREYAPELLIDO = @nombreYApellido, DNI = @dni, LEGAJO = @legajo, TELEFONOFIJO = @telefonoFijo, TELEFONOCELULAR = @telefonoCelular, MAIL = @mail,
						  SITIOWEB = @sitioWeb, DIRECCION = @direccion, HUELLA = @huella,IMAGEN = @imagen, USERNAME = @userName, PASSWORD = @password, ESENCARGADO = @esEncargado, FK_ID_BARRIO = @fkidBarrio
	WHERE ID_INVESTIGADOR = @idInvestigador

CREATE PROCEDURE PR_INVESTIGADOR_SA
AS
	SELECT * FROM INVESTIGADOR
	RETURN

CREATE PROCEDURE PR_INVESTIGADOR_SNAME
	(
		@nombreYApellido varchar(60)
	)
AS
	SELECT * FROM INVESTIGADOR
	WHERE NOMBREYAPELLIDO LIKE'%'+ @nombreYApellido +'%'
	RETURN

--Procedimientos almacenados para la tabla PROYECTO

CREATE PROCEDURE PR_PROYECTO_I 
	(
		@idProyecto int,
		@nombre varchar(30),
		@descripcion varchar(50),
		@sitioWeb varchar(35),
		@mail varchar(35),
		@fechaInicio datetime,
		@fechaFin datetime,
		@tiempoEstimadoMeses int,
		@fkidInvestigadorLider int
	)
AS
	INSERT INTO[PROYECTO] (NOMBRE, DESCRIPCION, SITIOWEB, MAIL, FECHAINICIO, FECHAFIN, TIEMPOESTIMADOMESES, FK_ID_INVESTIGADORLIDER)
	VALUES (@nombre, @descripcion, @sitioWeb, @mail, @fechaInicio, @fechaFin, @tiempoEstimadoMeses, @fkidInvestigadorLider)
	RETURN SCOPE_IDENTITY()

CREATE PROCEDURE PR_PROYECTO_D(@idProyecto int)
AS
	DELETE FROM [PROYECTO] WHERE ID_PROYECTO = @idProyecto

CREATE PROCEDURE PR_PROYECTO_S
	(
		@idProyecto int
	)
AS
	SELECT ID_PROYECTO, NOMBRE, DESCRIPCION, SITIOWEB, MAIL, FECHAINICIO, FECHAFIN, TIEMPOESTIMADOMESES, FK_ID_INVESTIGADORLIDER
	FROM PROYECTO
	WHERE ID_PROYECTO = @idProyecto
	RETURN

CREATE PROCEDURE PR_PROYECTO_U
	(
		@idProyecto int,
		@nombre varchar(30),
		@descripcion varchar(50),
		@sitioWeb varchar(35),
		@mail varchar(35),
		@fechaInicio datetime,
		@fechaFin datetime,
		@tiempoEstimadoMeses int,
		@fkidInvestigadorLider int
	)
AS
	UPDATE [PROYECTO] SET NOMBRE = @nombre, DESCRIPCION = @descripcion, SITIOWEB = @sitioWeb, MAIL = @mail, FECHAINICIO = @fechaInicio, FECHAFIN = @fechaFin,
					  TIEMPOESTIMADOMESES = @tiempoEstimadoMeses, FK_ID_INVESTIGADORLIDER = @fkidInvestigadorLider
	WHERE ID_PROYECTO = @idProyecto

CREATE PROCEDURE PR_PROYECTO_SA
AS
	SELECT * FROM PROYECTO
	RETURN

CREATE PROCEDURE PR_PROYECTO_SNAME
	(
		@nombre varchar(30)
	)
AS
	SELECT * FROM PROYECTO
	WHERE NOMBRE LIKE'%'+ @nombre + '%'
	RETURN

--Procedimientos almacenados para la tabla PERFIL

CREATE PROCEDURE PR_PERFIL_I 
	(
		@idPerfil int,
		@nombre varchar(30),
		@descripcion varchar(50),
		@tecnologia varchar(50),
		@conocimientos varchar (50),
		@cantidad int,
		@fkidProyecto int
	)
AS
	INSERT INTO[PERFIL] (NOMBRE, DESCRIPCION, TECNOLOGIA, CONOCIMIENTOS, CANTIDAD, FK_ID_PROYECTO)
	VALUES (@nombre, @descripcion, @tecnologia, @conocimientos, @cantidad, @fkidProyecto)
	RETURN SCOPE_IDENTITY()

CREATE PROCEDURE PR_PERFIL_D(@idPerfil int)
AS
	DELETE FROM [PERFIL] WHERE ID_PERFIL = @idPerfil

CREATE PROCEDURE PR_PERFIL_S
	(
		@idPerfil int
	)
AS
	SELECT ID_PERFIL, NOMBRE, DESCRIPCION, TECNOLOGIA, CONOCIMIENTOS, CANTIDAD, FK_ID_PROYECTO
	FROM PERFIL
	WHERE ID_PERFIL = @idPerfil
	RETURN

CREATE PROCEDURE PR_PERFIL_U
	(
		@idPerfil int,
		@nombre varchar(30),
		@descripcion varchar(50),
		@tecnologia varchar(50),
		@conocimientos varchar (50),
		@cantidad int,
		@fkidProyecto int
	)
AS
	UPDATE [PERFIL] SET NOMBRE = @nombre, DESCRIPCION = @descripcion, TECNOLOGIA = @tecnologia, CONOCIMIENTOS = @conocimientos, CANTIDAD = @cantidad, FK_ID_PROYECTO = @fkidProyecto
	WHERE ID_PERFIL = @idPerfil

CREATE PROCEDURE PR_PERFIL_SA
AS
	SELECT * FROM PERFIL
	RETURN

--Procedimientos almacenados para la tabla ASISTENCIA

CREATE PROCEDURE PR_ASISTENCIA_I 
	(
		@idAsistencia int,
		@fechaYHoraEntrada datetime,
		@fechaYHoraSalida datetime,
		@fkidInvestigador int
	)
AS
	INSERT INTO[ASISTENCIA] (FECHAYHORAENTRADA, FECHAYHORASALIDA, FK_ID_INVESTIGADOR)
	VALUES (@fechaYHoraEntrada, @fechaYHoraSalida, @fkidInvestigador)
	RETURN SCOPE_IDENTITY()

CREATE PROCEDURE PR_ASISTENCIA_D(@idAsistencia int)
AS
	DELETE FROM [ASISTENCIA] WHERE ID_ASISTENCIA = @idAsistencia

CREATE PROCEDURE PR_ASISTENCIA_S
	(
		@idAsistencia int
	)
AS
	SELECT ID_ASISTENCIA, FECHAYHORAENTRADA, FECHAYHORASALIDA, FK_ID_INVESTIGADOR
	FROM ASISTENCIA
	WHERE ID_ASISTENCIA = @idAsistencia
	RETURN

CREATE PROCEDURE PR_ASISTENCIA_U
	(
		@idAsistencia int,
		@fechaYHoraEntrada datetime,
		@fechaYHoraSalida datetime,
		@fkidInvestigador int
	)
AS
	UPDATE [ASISTENCIA] SET FECHAYHORAENTRADA = @fechaYHoraEntrada, FECHAYHORASALIDA = @fechaYHoraSalida, FK_ID_INVESTIGADOR = @fkidInvestigador
	WHERE ID_ASISTENCIA = @idAsistencia

CREATE PROCEDURE PR_ASISTENCIA_SA
AS
	SELECT * FROM ASISTENCIA
	RETURN

CREATE PROCEDURE PR_ASISTENCIA_SALIDA
	(
		@fkidInvestigador int
	)
AS
	SELECT ID_ASISTENCIA, FECHAYHORAENTRADA, FECHAYHORASALIDA, FK_ID_INVESTIGADOR
	FROM ASISTENCIA
	WHERE ID_ASISTENCIA >= (SELECT MAX(ID_ASISTENCIA)
						    FROM ASISTENCIA A
						    WHERE A.FK_ID_INVESTIGADOR = @fkidInvestigador)
	RETURN

CREATE PROCEDURE PR_ASISTENCIA_SALIDASNULL
AS
	SELECT * FROM ASISTENCIA
	WHERE FECHAYHORASALIDA IS NULL
	RETURN

CREATE PROCEDURE PR_ASISTENCIA_SEARCH
	(
		@fkidInvestigador int
	)
AS
	SELECT * 
	FROM ASISTENCIA
	WHERE FK_ID_INVESTIGADOR = @fkidInvestigador
	RETURN

--Procedimientos almacenados para la tabla INVESTIGADORXPERFIL

CREATE PROCEDURE PR_INVESTIGADORXPERFIL_I 
	(
		@idIntegrante int,
		@fkidInvestigador int,
		@fkidPerfil int
	)
AS
	INSERT INTO[INVESTIGADORXPERFIL] (FK_ID_INVESTIGADOR, FK_ID_PERFIL)
	VALUES (@fkidInvestigador, @fkidPerfil)
	RETURN SCOPE_IDENTITY()

CREATE PROCEDURE PR_INVESTIGADORXPERFIL_D(@idIntegrante int)
AS
	DELETE FROM [INVESTIGADORXPERFIL] WHERE ID_INTEGRANTE = @idIntegrante

CREATE PROCEDURE PR_INVESTIGADORXPERFIL_S
	(
		@idIntegrante int
	)
AS
	SELECT ID_INTEGRANTE, FK_ID_INVESTIGADOR, FK_ID_PERFIL
	FROM INVESTIGADORXPERFIL
	WHERE ID_INTEGRANTE = @idIntegrante
	RETURN

CREATE PROCEDURE PR_INVESTIGADORXPERFIL_U
	(
		@idIntegrante int,
		@fkidInvestigador int,
		@fkidPerfil int
	)
AS
	UPDATE [INVESTIGADORXPERFIL] SET FK_ID_INVESTIGADOR = @fkidInvestigador, FK_ID_PERFIL = @fkidPerfil
	WHERE ID_INTEGRANTE = @idIntegrante

CREATE PROCEDURE PR_INVESTIGADORXPERFIL_SA
AS
	SELECT * FROM INVESTIGADORXPERFIL
	RETURN